package com.lty.jeeg.server.modules.fas.model;

import com.lty.jeeg.server.common.enums.CodeEnum;
import com.lty.jeeg.server.modules.sys.model.BaseEntity;
import lombok.*;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author : zl
 * @date : 2019-02-17 09:18:28
 * Description : 采购明细
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class OrderDetail extends BaseEntity<Long> {

    private static final long serialVersionUID = 1L;

	/**
	 需求明细编码
	  */
	private String name;

	/**
	 需求id
	  */
	private Long orderId;
	/**
	 * 是否常规
	 */
	private Integer isCommon;
	/**
	 * 是否耗材
	 */
	private Integer isConsumables;

	/**
	 需求编号
	 */
	private String orderName;

	/**
	 发起人id
	  */
	private Long originatorId;

	/**
	 发起人姓名
	  */
	private String originatorName;

	/**
	 发起人所在部门id
	  */
	private Long originatorOfficeId;

	/**
	 发起人所在部门名称
	  */
	private String originatorOfficeName;

	/**
	 公司id
	  */
	private String companyId;

	/**
	 公司名称
	  */
	private String companyName1;
	/**
	 * 期望交付时间
	 */
	private Date  wishPayDate;
	/**
	 明细货品
	  */
	private String detailName;

	/**
	 明细规格
	  */
	private String detailSpec;

	/**
	 * 需求数量
	 */
	private BigDecimal detailNum;

	/**
	 明细单位
	  */
	private String detailUnit;

	/**
	 明细单价
	  */
	private BigDecimal detailSinprice;

	/**
	 * 总价
	 */
	private BigDecimal totalPrice;

	/**
	 明细总价
	  */
	private BigDecimal detailTolprice;

	/**
	 所属订单状态
	  */
	private Integer orderType;

	/**
	 本条明细交付状态
	  */
	private Integer handleType;

	/**
	 本条明细入库状态
	  */
	private Integer buyStatus;

	/**
	 实际入库数量
	  */
	private Integer actNum;

	/**
	 商品id
	  */
	private Long goodsId;

	/**
	 商品名称
	  */
	private String goodsName;

	/**
	 商品分类名称
	 */
	private String categoryName;

	/**
	 供应商id
	  */
	private Long supplierId;

	/**
	 供应商名称
	  */
	private String supplierName;

	/**
	 采购明细小计
	  */
	private BigDecimal detailTotalPrice;

	/**
	 订单明细状态
	  */
	private Integer orderDetailType;

	@Getter
	@NoArgsConstructor
	@AllArgsConstructor
	public enum OrderDetailType implements CodeEnum<Integer> {
		/**
		 *
		 */
		DRAFT(0, "待提交"),
		TO_BE_CONFIRMED(1, "待确认"),
		TO_BE_DELIVERED(2, "待交付"),
		PARTIAL_DELIVERY(3, "部分交付"),
		DELIVERED(4, "全部交付"),
		CANCELED(5, "已取消"),
		FORCE_FINISH(6, "平单"),
		;


		private Integer code;

		private String msg;
	}

	/**
	 交付人id
	  */
	private Long delivererId;

	/**
	 交付人name
	  */
	private String delivererName;

	/**
	 待交付数量
	  */
	private Integer waitNum;

	/**
	 需求明细类型(10:领取;20:采购)
	  */
	private Integer demandType;

	@Getter
	@NoArgsConstructor
	@AllArgsConstructor
	public enum DemandType implements CodeEnum<Integer> {
		/**
		 *
		 */
		RECEIVE(10, "领取"),
		BUY(20, "采购");

		private Integer code;

		private String msg;
	}



}
